package chpt05;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Month;
import java.time.format.DateTimeFormatter;
import java.util.Formatter;
import java.util.Locale;

public class DateTimeForamterTest {

	public static void main(String[] args) {
		parseTest();   // 解析演示
		//formatTest();  // 格式化演示
		
	}
	
	private static void parseTest() {
		// 将字符串按照指定Pattern解析成Date(String -> date time)
		String s1 = "2023-05-31 12:56:27";
		String p1 = "yyyy-MM-dd HH:mm:ss";
		DateTimeFormatter f1 = DateTimeFormatter.ofPattern(p1);
		LocalDateTime d1 = LocalDateTime.parse(s1, f1);
		System.out.println(d1); // 2023-05-31T12:56:27
		
		String s2 = "Jun 30, 2023";
		String p2 = "MMM dd, yyyy";
		// 指定模式串与区域（Locale）以便正确解析
		DateTimeFormatter f2 = DateTimeFormatter.ofPattern(p2, Locale.US);
		LocalDate d2 = LocalDate.parse(s2, f2);
		System.out.println(d2); // 2023-06-30
		
		String s3 = "2023-06-30";
		// 使用了预定义的DateTimeFormatter
		DateTimeFormatter f3 = DateTimeFormatter.ISO_DATE;
		LocalDate d3 = LocalDate.parse(s3,f3);
		System.out.println(d3); // 2023-06-30
		System.out.println(d2.isEqual(d3)); // 比较两个区域的日期是否相同
		
		/* 直接使用LocalDate.parse进行解析。
		使用的是DateTimeFormatter.ISO_LOCAL_DATE*/
		LocalDate d4 = LocalDate.parse("2023-05-01");
		System.out.println(d4);
		
	}

	private static void formatTest() {
		// 创建代表2020年2月20日的LocalDate
		LocalDate date = LocalDate.of(2020,Month.FEBRUARY, 20);

		String p1 = "YYYY-MM-dd";
		DateTimeFormatter f1 = DateTimeFormatter.ofPattern(p1);
		String s1 = date.format(f1);
		System.out.println(s1); // 2020-02-20
		
		String p2 = "YYYY年MM月dd日";
		DateTimeFormatter f2 = DateTimeFormatter.ofPattern(p2);
		String s2 = date.format(f2);
		System.out.println(s2); // 2020年02月20日
		
		DateTimeFormatter f3 = DateTimeFormatter.BASIC_ISO_DATE;
		String s3 = date.format(f3);
		System.out.println(s3); // 20200220
		
	}
	

}
